
import {
    createSlice
} from '@reduxjs/toolkit'


//createSlice:接收一个初始状态和一个带有reducer名称和函数的查找表,并自动生成action creator函数,action类型字符串和一个reducer函数
 const countSlice = createSlice({
    //action中type的命名空间 是type的前缀
    name:'counter',
    //定义初始值    reducer提供的初始值
    initialState:{
        count:0
    },
    //定义reducer更新状态函数
    reducers:{
        increment(prev,action){
            //reduce中处理函数接收两个参数 分别是当前reducer中上一次的值/本次dispacth的action对象
            //action对象中有一个payload就是用户调用action函数时传递的参数
            console.log(prev,action,'reducer中的参数打印');
            //不需要像之前那样的到新值再覆盖,可以直接修改reducer中的值,redux-toolkit中合成有一个immit的包帮我们处理
            prev.count += action.payload

        },
        decrement(prev,action){
            console.log(prev,action,'reducer中的参数打印');
            prev.count -= action.payload
        }

    }
})


//通过createSilce创建的对象上的一个reducer属性,直接得到就是当前的reducer函数,可以直接暴露出去给store使用
export default countSlice.reducer

//createSilce通过传递进来的配置内容把对应的action函数也创建出来,把所有的action保存在countSlice的action对象上
export const {
    increment,
    decrement
} = countSlice.actions
console.log(increment,'555');